昨天整理出了系統的功能清單與角色權限,今天要將這些需求轉成資料庫的核心。
遵循最小可行性的原則,將圖書管理系統由三張資料表組成:books(書籍)、members(會員)與 loans(借閱紀錄)。
資料表設計與分工
- 書籍表
儲存圖書館內所有書籍的基本資料與庫存狀態。
- 欄位:書籍 ID、書名、作者、ISBN、出版年份、分類、總數量、剩餘可借數量。
- 會員表:
儲存使用者的帳號資訊與權限角色。
- 欄位:會員 ID、姓名、Email(兼帳號)、密碼(雜湊值)、角色權限(一般使用者 / 管理員)、註冊時間。
- 借閱紀錄表:
作為「書籍」與「會員」之間的橋樑(多對多關係的關聯表),記錄誰在什麼時候借了哪本書。
- 欄位:借閱紀錄 ID、會員 ID(外鍵)、書籍 ID(外鍵)、借出日期、應還日期、實際歸還日期、狀態(借出中 / 已歸還)。
三張表之間的關聯

使用 ChatGPT 輔助繪製的圖
- 會員與借閱:1 對多(1:N),一位會員可以借閱多本書,產生多筆借閱紀錄。
- 書籍與借閱:1 對多(1:N),一本書可以被不同人多次借閱,產生多筆借閱紀錄。
訂好三張表的功能與關聯後,明天會討論每個欄位的資料型別該如何選擇,才能兼顧效能與儲存空間。